import {
  TODO_ADD,
  TODO_DELETE,
  TODO_UPDATE_ALL,
  TODO_UPDATE_STATUS,
} from '../constants'

const initState = [
  {
    id: 1,
    name: '吃饭',
    done: true,
  },
  {
    id: 2,
    name: '睡觉',
    done: false,
  },
]

export default function todo(state = initState, action) {
  switch (action.type) {
    case TODO_DELETE:
      return state.filter((item) => item.id !== action.id)
    case TODO_UPDATE_STATUS:
      return state.map((item) =>
        item.id === action.id ? { ...item, done: !item.done } : item
      )
    case TODO_ADD:
      const { type, ...payload } = action
      return [payload, ...state]
    case TODO_UPDATE_ALL:
      return state.map((item) => ({ ...item, done: action.done }))
    default:
      return state
  }
}
